/**
 * Copyright (c) 2016-2019 人人开源 All rights reserved.
 *
 * https://www.renren.io
 *
 * 版权所有，侵权必究！
 */

package com.kclm.xsap.web.common;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * 通用返回结果类LoginFilter
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class R<T> {
	private int code;       // 状态码
	private String message; // 提示信息
	private T data;         // 数据

	/**
	 * 成功返回，带数据
	 * @param data 返回数据
	 * @return R对象
	 */
	public static <T> R<T> success(T data) {
		return new R<>(200, "Success", data);
	}

	/**
	 * 成功返回，带自定义消息
	 * @param message 消息内容
	 * @return R对象
	 */
	public static <T> R<T> success(String message) {
		return new R<>(200, message, null);
	}

	/**
	 * 成功返回，带自定义消息和数据
	 * @param message 消息内容
	 * @param data 数据
	 * @return R对象
	 */
	public static <T> R<T> success(String message, T data) {
		return new R<>(200, message, data);
	}

	/**
	 * 失败返回，带错误信息
	 * @param message 错误消息
	 * @return R对象
	 */
	public static <T> R<T> error(String message) {
		return new R<>(500, message, null);
	}

	/**
	 * 自定义错误返回
	 * @param code 错误码
	 * @param message 错误消息
	 * @return R对象
	 */
	public static <T> R<T> error(int code, String message) {
		return new R<>(code, message, null);
	}
}
